// Copyright  2011, 2012 Petr TALLA. [petr.talla@gmail.com]
// This file is free software; you can redistribute it and/or modify it 
// under the terms of the GNU Lesser General Public License 
// as published by the Free Software Foundation; either 
// version 2 of the License, or (at your option) any later version.
// 
// This file is distributed in the hope that it will be useful, 
// but WITHOUT ANY WARRANTY;  without even the implied warranty 
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
// [http://www.gnu.org/copyleft/lesser.html]
//=============================================================================
#pragma once

#include <string>

class TcArgCol;
class TcCmdEngine;

//=============================================================================
class TcCmd {
//=============================================================================
public:
//<TYPEDEFS>
    typedef int (*Cmd) (TcCmdEngine* engine, TcArgCol& args);
//<CONSTRUCTION>
    TcCmd(const char* name, Cmd cmd);
    ~TcCmd();
//<METHODS>
    Cmd cmd(void) { return cmd_; };
    const char* name(void) const { return name_.c_str(); };
    bool frontControll(void) { return frontControll_;}
    void frontControllExclude() { frontControll_ = false; }
//=============================================================================
protected:
//<DATA>
    Cmd          cmd_;
    std::string  name_;
    bool         frontControll_;
};
